--设置定时器
time = os.time();

--初始化
init("0",0);

mSleep(3000);
--来电暂停
luaExitIfCall(true);

--初始化日志
initLog("自动脚本1", 0)

--点击函数
function click(n,x,y)
	mSleep(500);
	touchDown(n,x,y);  
	mSleep(50);
	touchUp(n,x,y);
	mSleep(500);
end

function timeOut()
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		if os.time()-time>260 then
			lua_restart();
		end
end

--清理后台
function cleanAll()
	
	--新方法
	closeApp("*",1);
	wLog("自动脚本1", "[DATE] 清理后台");
	
end

function clickColor(x,y,color)
	
	if isColor(x, y, color,90) then
			mSleep(500);
			click(1,x, y);
			mSleep(1500);
		end   
end 

function movettoo(n,x,y,a,b)
	-- body
	touchDown(n, x, y); --在坐标 (150, 550)按下
	mSleep(80);
	touchMove(n, a, b); --移动到坐标 (150, 600)，注意一次滑动的坐标间隔不要太大，不宜超过50像素
	mSleep(80);
	touchUp(n, a, b);   --在坐标 (150, 600) 抬起
end


--点击home键
function home()
	mSleep(500);
	--按下home键退出
	pressHomeKey(0);    --按下 Home 键
	mSleep(50);
	pressHomeKey(1);    --抬起 Home 键
	mSleep(500);
end


--颜色模糊判断
function isColor(x,y,c,s)   --封装函数，函数名 isColor
    local fl,abs = math.floor,math.abs
    s = fl(0xff*(100-s)*0.01)
    local r,g,b = fl(c/0x10000),fl(c%0x10000/0x100),fl(c%0x100)
    local rr,gg,bb = getColorRGB(x,y)
    if abs(r-rr)<s and abs(g-gg)<s and abs(b-bb)<s then
        return true
    end
end

function newPhone()
	--初始化
	init("0",0);
	mSleep(1000);
	
	--进入NZT进行手机一键新机，重复打开4遍，防止闪退，闪退率高
	r = runApp("NZT"); 
	mSleep(2000)
	r = runApp("NZT");
	mSleep(2000)
	r = runApp("NZT");
	mSleep(2000)
	r = runApp("NZT"); 
	mSleep(2000);
	if r ~= 0 then
		lua_restart();
	end
	wLog("自动脚本1","[DATE] 进入NZT软件");
	
	--点一下返回按钮
	click(1,39,82);
	mSleep(2000);


	--点击清理keychain
	click(1,161,692);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击keychain按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	mSleep(2000);
	
	--点击清理safari
	click(1,501,689);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击safari按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	
	mSleep(2000);
	
	--点击一键新机
	click(1,489,822);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击一键新机按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	mSleep(2000);
	
	home();
	
	
end



function awzPhone()
	
	--启动AWZ并一键新机（如软件验证失败则重新打开）
    openURL("IGG://cmd/open");
	time_1 = os.time()
	
	--判断软件验证是否成功,不成功则重新打开
	while (true) do
		if isColor(30,1102,0xff0101,90)then
			time_2 = os.time()
			if (time_2-time_1>10) then
				cleanAll()
				mSleep(2000)
				openURL("IGG://cmd/open");
			end
		elseif isColor(30,1093,0x0000ff,90)then
			openURL("IGG://cmd/newrecord")
			break
		end
	end	
	
	--点击清理keychain
	mSleep(1000)
	click(1,172,812)
	while (true) do
		if isColor(312,544,0xdce0dd,90) then
			mSleep(2000)
		elseif isColor(312,544,0xffffff,90) then
			break
		end
	end
	
	--点击清理safari
	mSleep(1000)
	click(1,471,614)
	while (true) do
		if isColor(312,544,0xdce0dd,90) then
			mSleep(2000)
		elseif isColor(312,544,0xffffff,90) then
			break
		end
	end
	
	--点击新机参数
	click(1,491,269);
	mSleep(2000);
	
	--点击随机生成
	click(1,475,81);
	mSleep(2000);
	
	--点击手机型号
	click(1,453,168);
	mSleep(2000);
	
	--随机手机型号
    math.randomseed(tostring(os.time()):reverse():sub(1, 7)) --设置随机数种子
    case = math.random(1,8)
	mSleep(1000);
	if case == 1 then    
		click(1,330,  404); 
		mSleep(1000);
	elseif case == 2 then  
		click(1,330,  490); 
		mSleep(1000);
	elseif case == 3 then  
		click(1,330, 572);
		mSleep(1000);
	elseif case == 4 then  
		click(1,330,  660);
		mSleep(1000);
	elseif case == 5 then  
		click(1,330,  746);
		mSleep(1000);
	elseif case == 6 then  
		click(1,330,  844); 
		mSleep(1000);
	elseif case == 7 then  
		click(1,330,  926); 
		mSleep(1000);
	elseif case == 8 then  
		click(1,330, 1014);
		mSleep(1000);
	end  
	
	--点击系统版本
	mSleep(3000);
	click(1,196,263);
	mSleep(2000);
	
    --自定义滑动
	touchDown(1, 588, 898)
	mSleep(2000);
	touchMove(1, 588, 284)
	mSleep(2000);
	touchUp(1, 588, 284)
	mSleep(2000);
	
    --随机系统版本
    math.randomseed(tostring(os.time()):reverse():sub(1, 7)) --设置随机数种子
	case = math.random(1,9)
	mSleep(1000);
    if case == 1 then   
        click(1,204,380); 
		mSleep(1000);
    elseif case == 2 then  
        click(1,208,462); 
		mSleep(1000);
	elseif case == 3 then  
        click(1,208,560);
		mSleep(1000);
	elseif case == 4 then  
        click(1,212,646);
		mSleep(1000);
	elseif case == 5 then  
        click(1,208,732);
		mSleep(1000);
	elseif case == 6 then  
        click(1, 204,816); 
		mSleep(1000);
	elseif case == 7 then  
        click(1,204,904); 
		mSleep(1000);
	elseif case == 8 then  
        click(1,204,992);
		mSleep(1000);
	elseif case == 9 then  
        click(1,202,1074);
		mSleep(1000);	
    end   
	
	--重命名当前留存
	renameCurrentRecord("-----------红盒子-----------");  
	
    --按下home键返回	
	home()  
	
end

--重命名当前记录
function renameCurrentRecord(name)
	local sz = require("sz");
	local http = require("szocket.http");
	local res, code = http.request("http://127.0.0.1:1688/cmd?fun=renamecurrentrecord&name="..name);
	if code == 200 then
		local resJson = sz.json.decode(res);
		local result = resJson.result;
	end	
end

function rnd(min,max)
  --lua的第1次random数不靠谱，取第3次的靠谱
  local ret=0
  math.randomseed(os.time())
  for i=1,3 do
	n = math.random(min,max)
    ret=n
  end
  return ret
end




function getIDFA()
	
	--打开设备信息软件
	r = runApp("com.tongbu.InfoJust")
    mSleep(2000)
	
	--复制IDFA
	click(1,317,797)
	mSleep(2000);
	
	--点击确定
	click(1,322,654)
	
	--点击home键退出
	home();
	
end

function getline(filepath)
	
	--初始化一个对象
	local t={}
	
	--打开指定路径下的文件
	local file=io.open(filepath)
	
	--按行将文件内容写入对象
	for line in file:lines() do
		table.insert(t,line)
	end
	
	--获取对象第一个元素后删除第一个对象
	temp_line=table.remove(t,1)
	
	--以写方式打开指定路径
	local file=io.open(filepath,'w')
	
	--写入对象内容
	for i,j in ipairs(t) do
		file:write(j,'\n')
	end
	
	file:close()
	
	return temp_line
end


--主函数入口
function lua_string_split1()
	local emailtable={}
	
	mSleep(1000)
	--这里填写文件名，注意只需改动最后的文件名，文件路径别动
	email = getline('/User/Media/TouchSprite/lua/email.txt');
	
	if email==nil then
		dialog("文件读完了", 0)
		lua_exit()
	end
	
	i = string.find(email,'-');

	--邮箱
	emailtable[1] = string.sub(email,1,i-1);
	--密码
	emailtable[2] = string.sub(email,i+4,string.len(email));

	--规定用户名不得大于20字符，所以取邮箱@号前的字符串
	i = string.find(emailtable[1],'@');
	--用户名
	emailtable[3] = string.sub(emailtable[1],1,i-1);
		
	return emailtable
	
end

--字符串分割函数
function lua_string_split2()
	
    --这里填写文件名，注意只需改动最后的文件名，文件路径别动
	email = getline('/User/Media/TouchSprite/lua/email.txt');
	if email==nil then
		dialog("文件读完了", 0)
		lua_exit()
	end
	--以,号分割，并且返回一个数组
	local sub_str_tab = {};
    for mu_id in string.gmatch(email, "[^,]+") do
        table.insert(sub_str_tab, mu_id)
    end
    return sub_str_tab;
end


function playGame()
	
	--初始化
	init("0",0);
	mSleep(1000);
	
	--浏览器
	openURL("http://ballmacho.host/?cid=29");
	
	
	--开始循环判断是否弹出打开app商城的按钮
	while (true) do
		warningAll();
		if isColor(417,  651, 0x007aff,90) then
			mSleep(500);
			click(1,417,  651);
			mSleep(1000);
			break;
		end
		wLog("自动脚本1","[DATE] 进入while循环判断打开app商城按钮是否出现");
		
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		--循环判断是否出现proxy error
		if isColor(21,154,0x565656,90) then
			mSleep(500);
			click(1,590,76);
			mSleep(500);
		end
		--循环判断continue
		if isColor(17,161,0x6a6af5,90) then
			mSleep(500);
			click(1,153,164);
			mSleep(500);  
		end
	end
	
	mSleep(3000);
	
	-------------------------------------------------------------------------
	--此处调用函数，读取文件名已经密码
	-------------------------------------------------------------------------
	PW = lua_string_split2();
	
	mSleep(2000);
	
	
	--开始循环判断是否成功打开app商城并点击进入软件
	while (true) do
		wLog("自动脚本1","[DATE] 这是判断进入软件按钮出现的循环");
		warningAll();
		
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		vvv = isColor(497,  331,0xffffff,90);
		if vvv~=true then
			wLog("自动脚本1","[DATE] 现在点击进入软件");
			--随机一个数
			math.randomseed(tostring(os.time()):reverse():sub(1, 7)) --设置随机数种子
			Randomx = math.random(10,30);
			dialog(Randomx, 3);
			mSleep(Randomx*1000);
			warningAll();
			mSleep(4000);
			warningAll();
			mSleep(3000);
			click(1,497,  331);
			break;
		end
		mSleep(2000);
		
	end
	
	
	--dialog("进入游戏了", 3)
	mSleep(5000);
	--开始注册环节
	while (true) do
		--如果是加载图标则等待两秒继续判断
		if isColor(316,  569, 0xd4cac8, 90) then
			mSleep(2000)
		--如果加载图标消失跳出循环
		elseif isColor(316,  569, 0xffffff, 90)then 
			break
		end
		
		warningAll();
	end
	
	--点击skip!
	click(1,322,  978);
	mSleep(1000)
	
	warningAll();
	
	--your location is: ok
	click(1,189,  557);
	mSleep(2000)
	
	--左上角菜单
	click(1, 56, 81);
	mSleep(2000)
	
	--my acount
	click(1,176, 1027);
	mSleep(2000)
	
	--register
	click(1, 149, 1037);
	mSleep(2000)
	
	--email
	click(1,311,  298);
	inputText(PW[5]);
	mSleep(2000)
	
	--next
	click(1 , 454, 519);
	mSleep(2000);
	
	while (true) do
		--如果是加载图标则等待两秒继续判断
		if isColor(316,  569, 0xd4cac8, 90) then
			mSleep(2000)
		--如果加载图标消失跳出循环
		else  
			break
		end
		
		warningAll();
	end
	mSleep(2000)
	
	--click title
	click(1, 303,  286);
	inputText(PW[6]);
	mSleep(2000);
	
	--click fname
	click(1, 298,  385);
	inputText(PW[6]);
	mSleep(2000);
	
	--click lname
	click(1, 305,  480);
	inputText(PW[7]);
	mSleep(2000);
	
	--click next
	click(1 , 469,  593);
	mSleep(2000)
	
	--click postcode
	click(1 , 153,  329);
	inputText(PW[11])
	mSleep(2000)
	
	--click lookup
	click(1, 478,  328);
	mSleep(2000)
	
	while (true) do
		--如果是加载图标则等待两秒继续判断
		if isColor(316,  569, 0xd4cac8, 90) then
			mSleep(2000)
		--如果加载图标消失跳出循环
		else  
			break
		end
		
		warningAll();
	end
	mSleep(2000)
	
	--click done
	click(1 , 562,  723);
	mSleep(2000)
	
	--上划动，找到next
	movettoo(1, 297,  653,322,  192)
	mSleep(2000)
	
	--click next
	click(1,480,  465);
	mSleep(2000)
	
	--click password
	click(1,312,  295);
	inputText(PW[12]);
	mSleep(2000)
	
	--click password again
	click(1,320,  402);
	inputText(PW[12]);
	mSleep(2000)
	
	
	--next
	click(1,493,  540);
	mSleep(2000)
	
	
	--随机一个数（这个随机数是随意设置的，就是要保证大于5分钟）
	math.randomseed(tostring(os.time()):reverse():sub(1, 7)) --设置随机数种子
	Randomx = math.random(100,200);
	--dialog(Randomx, 3);
	oldTime = 1;
	while (true) do
		
		
		
		--返回
		if isColor(47,   85, 0xffffff, 90) then
			click(1 ,47,   85);
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		oldTime = oldTime+1;
		movettoo(1,312,745,312,400);
		mSleep(5000);
		
		warningAll();
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		if (Randomx%oldTime)==0 then
			movettoo(1,500,840,117,840);
		end
		
		mSleep(1000);
		
		if oldTime==Randomx then
			break;
		end
	end
 	
	dialog("Game Over", 5);
end


function warningAll()
	if isColor(327,671,0x007aff,90) then
			wLog("自动脚本1", "[DATE] 这是警告四判断")
			mSleep(2000);
			click(1,327,671);
			mSleep(2000);
			click(1,580,690);
	elseif isColor(340,664,0x007aff,90) then
			wLog("自动脚本1", "[DATE] 这是警告五判断")
			mSleep(2000);
			click(1,340,664);
			mSleep(2000);
	elseif isColor(297,  753, 0x007aff,90) then
			wLog("自动脚本1", "[DATE] wow - rate wowcher")
			mSleep(2000);
			click(1,297,  753);
			mSleep(2000);
	elseif isColor(195,  491, 0x007aff,90) then
			wLog("自动脚本1", "[DATE] apple store")
			mSleep(2000);
			click(1,195,  491);
			mSleep(2000);
	end
end

--清理后台
function cleanAll()
	
	--新方法
	closeApp("*",1);
	wLog("自动脚本1", "[DATE] 清理后台");
	
end

--换IP
function changeIP()
	i = 0;
	while (true) do
		--切换ip
		openURL("http://lumtest.com/myip.json?switchproxy");
		mSleep(5000);
		i = i + 1;
		if i>3 then
			break;
		end
	end
end


function main()
	
	home();
	mSleep(1000);
	
	--关闭vpn
	setVPNEnable(false);
	mSleep(2000);
	
	cleanAll();
	mSleep(1000);
	
	--new phone
	awzPhone();
	mSleep(2000);
	
	--打开vpn
	setVPNEnable(true);
	mSleep(5000);
	
	--切换ip
	changeIP();
	
	--开始玩游戏
	playGame();
	
end


main();
